﻿using System;
using TY.UC.Common;
using TY.UC.Common.Extension;
using TY.UT.Pay.WxPay.lib;

namespace TY.UT.Pay.WxPay
{
    public class MerchPayHelper
    {
        /// <summary>
        /// 企业向用户付款到零钱账户
        /// add by 黄星星 on 2018-04-20
        /// </summary>
        /// <returns></returns>
        public static string Mmpaymkttransfers(string outTradeNo, int totalFee, string openid,out string payment_no)
        {
            payment_no = "";
            WxPayData data = new WxPayData();  
            data.SetValue("openid", openid); //用户在商户appid下的唯一标识
            data.SetValue("partner_trade_no", outTradeNo); //商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
            data.SetValue("check_name", "NO_CHECK"); //校验用户姓名选项 NO_CHECK：不校验真实姓名 FORCE_CHECK：强校验真实姓名
            data.SetValue("amount", totalFee); //企业付款金额，单位为分
            data.SetValue("desc", "门店回款"); //企业付款操作说明信息。必填。 
            WxPayData result = WxPayApi.Mmpaymkttransfers(data, 12); //默认12秒，减少微信请求超时  
            LogHelper.WriteLog("零钱回款结果：" + new { result }.JsonSe());
            if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS")
            {
                payment_no = result.GetValue("payment_no").ToString();//微信支付号
                return "SUCCESS";
            }
            else
            {
                return
                    new
                    {
                        return_code = result.GetValue("return_code").ToString(),
                        result_code = result.GetValue("result_code").ToString(),
                        err_code = result.GetValue("err_code").ToString(),
                        err_code_des = result.GetValue("err_code_des").ToString()
                    }.JsonSe();
            }  
        }
        /// <summary>
        /// 企业向用户付款到银行账户
        /// add by 黄星星 on 2018-04-20
        /// </summary>
        /// <returns></returns>
        public static string PayBank(string outTradeNo, int totalFee, string enc_bank_no,string bank_code,string enc_true_name,
            out string payment_no,out string cmms_amt)
        {
            payment_no = "";
            cmms_amt = "";
            WxPayData data = new WxPayData();
            //data.SetValue("openid", openid); //用户在商户appid下的唯一标识
            data.SetValue("partner_trade_no", outTradeNo); //商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
            data.SetValue("check_name", "NO_CHECK"); //校验用户姓名选项 NO_CHECK：不校验真实姓名 FORCE_CHECK：强校验真实姓名
            data.SetValue("amount", totalFee); //企业付款金额，单位为分
            data.SetValue("enc_bank_no", enc_bank_no); //银行卡号
            data.SetValue("bank_code", bank_code); //银行编码
            data.SetValue("enc_true_name", enc_true_name); //收款方用户名 
            data.SetValue("desc", "银行回款"); //企业付款操作说明信息。必填。 
            WxPayData result = WxPayApi.PayBank(data, 12); //默认12秒，减少微信请求超时   
            LogHelper.WriteLog("银行汇款结果："+new { result }.JsonSe());
            if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS")
            {
                payment_no = result.GetValue("payment_no").ToString();//微信支付号
                cmms_amt = result.GetValue("cmms_amt").ToString();//手续费
                return "SUCCESS";
            }
            else
            {
                return
                    new
                    {
                        return_code = result.GetValue("return_code").ToString(),
                        result_code = result.GetValue("result_code").ToString(),
                        err_code = result.GetValue("err_code").ToString(),
                        err_code_des = result.GetValue("err_code_des").ToString()
                    }.JsonSe();
            }
        }
    }
}
